* university of cambridge computer laboratory
*/
-#include <xeno/lib.h>
-#include <xeno/sched.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
#include <asm-i386/ptrace.h>
-#include <xeno/keyhandler.h>
+#include <xen/keyhandler.h>
#include <asm/apic.h>
#include <asm/domain_page.h> /* [un]map_domain_mem */
#include <asm/processor.h>
#include <asm/pdb.h>
-#include <xeno/list.h>
-#include <xeno/serial.h>
+#include <xen/list.h>
+#include <xen/serial.h>
#define DEBUG_TRACE
#ifdef DEBUG_TRACE
struct task_struct *p;
p = find_domain_by_id(pdb_ctx[pdb_level].ctrl);
- pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.pagetable);
+ if (p->mm.shadow_mode)
+ pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.shadow_table);
+ else
+ pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.pagetable);
put_task_struct(p);
printk ("PROCESS: PDB SET CONTROL DOMAIN TO 0x%lx 0x%x\n",
pdb_ctx[pdb_level].ctrl_cr3,
struct task_struct *p;
p = find_domain_by_id(pdb_ctx[pdb_level].info);
- pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.pagetable);
+ if (p->mm.shadow_mode)
+ pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.shadow_table);
+ else
+ pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.pagetable);
put_task_struct(p);
printk ("PROCESS: PDB SET INFO DOMAIN TO 0x%lx 0x%x\n",
pdb_ctx[pdb_level].info_cr3,
if (thread > 0)
{
struct task_struct *p = find_domain_by_id(thread);
- pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.pagetable);
+ if (p->mm.shadow_mode)
+ pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.shadow_table);
+ else
+ pdb_ctx[pdb_level].ctrl_cr3 = pagetable_val(p->mm.pagetable);
put_task_struct(p);
printk ("PDB SET CONTROL DOMAIN TO 0x%lx 0x%x\n",
pdb_ctx[pdb_level].ctrl_cr3,
if (thread > 0)
{
struct task_struct *p = find_domain_by_id(thread);
- pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.pagetable);
+ if (p->mm.shadow_mode)
+ pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.shadow_table);
+ else
+ pdb_ctx[pdb_level].info_cr3 = pagetable_val(p->mm.pagetable);
put_task_struct(p);
printk ("PDB SET INFO DOMAIN TO 0x%lx 0x%x\n",
pdb_ctx[pdb_level].info_cr3,
if (!(l2_pgentry_val(*l2_table) & _PAGE_PRESENT))
{
struct task_struct *p = find_domain_by_id(0);
- printk ("cr3: 0x%lx dom0cr3: 0x%lx\n",
- cr3, pagetable_val(p->mm.pagetable));
+ printk ("cr3: 0x%lx dom0cr3: 0x%lx\n", cr3,
+ p->mm.shadow_mode ? pagetable_val(p->mm.shadow_table)
+ : pagetable_val(p->mm.pagetable));
put_task_struct(p);
printk ("L2:0x%p (0x%lx) \n", l2_table, l2_pgentry_val(*l2_table));
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
#include <hypervisor-ifs/dom0_ops.h>
#include <asm/pdb.h>
#define PIDHASH_SZ (4096 >> 2)
#define pid_hashfn(x) ((((x) >> 8) ^ (x)) & (PIDHASH_SZ - 1))
-/* from asm-xeno/pgtable-2level.h */
+/* from asm-xen/pgtable-2level.h */
#define PGDIR_SHIFT 22
#define PTRS_PER_PGD 1024
-/* from asm-xeno/page.h */
+/* from asm-xen/page.h */
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))
void pdb_linux_process_details (unsigned long cr3, int pid, char *buffer);
-/* adapted from asm-xeno/page.h */
+/* adapted from asm-xen/page.h */
static inline unsigned long machine_to_phys(unsigned long cr3,
unsigned long machine)
{
* xen pervasive debugger
*/
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
#include <hypervisor-ifs/dom0_ops.h>
-#include <xeno/sched.h>
-#include <xeno/event.h>
+#include <xen/sched.h>
+#include <xen/event.h>
#include <asm/page.h>
#include <asm/pdb.h>
struct task_struct *p;
p = find_domain_by_id(op->u.debug.domain);
- cr3 = pagetable_val(p->mm.pagetable);
+ if (p->mm.shadow_mode)
+ cr3 = pagetable_val(p->mm.shadow_table);
+ else
+ cr3 = pagetable_val(p->mm.pagetable);
for (loop = 0; loop < op->u.debug.in2; loop++) /* length */
{
}
case 's' :
{
- unsigned long cpu_mask;
struct task_struct * p = find_domain_by_id(op->u.debug.domain);
if (p != NULL)
{
if (p->state != TASK_STOPPED)
{
- cpu_mask = mark_guest_event(p, _EVENT_STOP);
- guest_event_notify(cpu_mask);
+ send_guest_virq(p, VIRQ_STOP);
}
put_task_struct(p);
}